home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / ARMLINUX / MAIL / 9804 / 000020_owner-linux-arm…r.rutgers.edu _Sat Apr 11 02:28:30 1998.msg < prev    next >
Internet Message Format  |  1998-05-13  |  3KB

  1. Return-Path: <owner-linux-arm-outgoing@vger.rutgers.edu>
  2. Received: from orava.funet.fi (orava.funet.fi [128.214.248.46])
  3.     by odie.barnet.ac.uk (8.8.6/8.8.6) with ESMTP id CAA14790
  4.     for <willy@odie.fluff.org>; Sat, 11 Apr 1998 02:28:29 +0100
  5. Received: from vger.rutgers.edu ([128.6.190.2]:2725 "EHLO vger.rutgers.edu" ident: "root") by orava.funet.fi with ESMTP id <392295-16469>; Sat, 11 Apr 1998 04:29:02 +0300
  6. Received: by vger.rutgers.edu id <971462-24968>; Fri, 10 Apr 1998 20:13:55 -0400
  7. Received: from post-31.mail.demon.net ([194.217.242.41]:36160 "HELO post.mail.demon.net" ident: "NO-IDENT-SERVICE") by vger.rutgers.edu with SMTP id <971598-24968>; Fri, 10 Apr 1998 19:53:31 -0400
  8. Received: from (tardis.home.dave) [194.222.210.232] 
  9.     by post.mail.demon.net with smtp (Exim 1.82 #2)
  10.     id 0yNoM7-0005k6-00; Sat, 11 Apr 1998 01:41:15 +0100
  11. Date:     Sat, 11 Apr 1998 01:36:41 +0100 (BST)
  12. From: Dave Gilbert <gilbertd@treblig.org>
  13. X-Sender: gilbertd@tardis.home.dave
  14. To: linux-arm@vger.rutgers.edu
  15. cc: egcs-bugs@cygnus.com, rearnsha@arm.com, nickc@cygnus.com
  16. Subject: egcs-980406 (and earlier)/ARM ldrsb - incorrect offset range
  17. Message-ID: <Pine.LNX.3.96.980411012814.501D-100000@tardis.home.dave>
  18. MIME-Version: 1.0
  19. Content-Type: TEXT/PLAIN; charset=US-ASCII
  20. X-Orcpt: rfc822;linux-arm@vger.rutgers.edu
  21. Sender: owner-linux-arm@vger.rutgers.edu
  22. Precedence: bulk
  23. X-Loop: majordomo@vger.rutgers.edu
  24. Status: RO
  25.  
  26. Hi,
  27.   In egcs-980406 (and earlier versions) the address offset range of the
  28. ldrsb instruction (introduced in ARM architecture v4) is set to be the
  29. same as normal ARM ldr (load register) instructions when it is actually
  30. a lot smaller.  The following example excersises this:
  31.  
  32. ------------------------------------------------------------------------
  33. struct foo {
  34.   int padding[200];
  35.   signed char toget;
  36. };
  37.  
  38. signed char bar(struct foo* p) {
  39.   return p->toget;
  40. };
  41. -------------------------------------------------------------------------
  42. gcc -mcpu=strongarm110  egbug.c -O2
  43. /tmp/cca06251.s: Assembler messages:
  44. /tmp/cca06251.s:19: Error: address offset too large
  45.  
  46. _bar:
  47.         @ args = 0, pretend = 0, frame = 0
  48.         @ frame_needed = 1, current_function_anonymous_args = 0
  49.         mov     ip, sp
  50.         stmfd   sp!, {fp, ip, lr, pc}
  51.         sub     fp, ip, #4
  52.         ldrsb   r0, [r0, #800]     ******** Range should be +/- 255
  53.         ldmea   fp, {fp, sp, pc}^
  54.  
  55. (This cropped up while trying to compile the tulip (DEC 21x ether)
  56. driver in Linux for StrongARM, while cross building from Alpha)
  57.  
  58. Dave
  59.  
  60.  --------------------------------------------------------------------
  61. / Dr. David Alan Gilbert      | Running Linux on Alpha & ARM         \ 
  62. \   gro.gilbert @ treblig.org | ------- Happy in hex -------         /
  63.  \____________________________|___ http://www.treblig.demon.co.uk __/
  64.  
  65. unsubscribe: body of `unsubscribe linux-arm' to majordomo@vger.rutgers.edu